package com.tc.activiti.base.entity;

import com.alibaba.fastjson.JSON;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 * 包含“分页”信息的List，这个对象包含分页数据和分页结果。
 */
public class PageList<E> extends ArrayList<E> implements Serializable {

    private static final long serialVersionUID = -3884653747610037029L;

    private PageResult pageResult;

    public PageList() {
    }

    public PageList(Collection<? extends E> c) {
        super(c);
        if (c instanceof PageList<?>) {
            this.pageResult = ((PageList<?>) c).pageResult;
        }
    }

    public PageList(Collection<? extends E> c, PageResult p) {
        super(c);
        this.pageResult = p;
    }

    public PageList(PageResult p) {
        this.pageResult = p;
    }

    /**
     * 得到分页器，通过Paginator可以得到总页数等值
     *
     * @return
     */
    public PageResult getPageResult() {
        return pageResult;
    }

    /**
     * @param pageResult the pageResult to set
     */
    public void setPageResult(PageResult pageResult) {
        this.pageResult = pageResult;
    }

    @Override
    public String toString() {
        return toJsonString();
    }

    public String toJsonString() {
        Map<String, Object> data = new HashMap<String, Object>();
        data.put("pageResult", ((PageList<E>) this).getPageResult().toJsonString());
        data.put("data", this);

        return JSON.toJSONString(data);
    }
}
